import pickle
import os

datafile = 'person.data'
line = '==============================='
message = '''
Welcome bookmark:
  press 1 to show list
  press 2 to add people
  press 3 to edit people
  press 4 to delete people
  press 5 to search people
  press 6 to show menu
  press 0 to quit
'''

print(message)


class Person(object):
    def __init__(self, name, number):
        self.name = name
        self.number = number


# 获取数据
def get_data(filename=datafile):
    # 判断文件存在且不能为空
    if os.path.exists(filename) and os.path.getsize(filename):
        with open(filename, 'rb') as f:
            return pickle.load(f)
    return None


# 写入数据
def set_data(name, number, filename=datafile):
    personList = {}
    if get_data() != None:
        personList = get_data()

    with open(filename, 'wb') as f:
				personList[name] = Person(name, number)
				pickle.dump(personList, f)


# 保存字典格式的数据到文件
def save_data(dictPerson, filename=datafile):
    with open(filename, 'wb') as f:
        pickle.dump(dictPerson, f)


# 显示所有联系人
def show_all():
    personList = get_data()
    if personList:
        for v in personList.values():
            print(v.name, v.number)
        print(line)
    else:
        print('not yet person, please add person first!')
        print(line)


# 添加联系人
def add_person(name, number):
    set_data(name, number)
    print('success add person')
    print(line)


# 编辑联系人
def edit_person(name, number):
    personList = get_data()
    if personList:
        personList[name] = Person(name, number)
        save_data(personList)
        print('success edit person')
        print(line)


# 删除联系人
def delete_person(name):
    personList = get_data()
    if personList:
        if name in personList.keys():
            del personList[name]
            save_data(personList)
            print('success delete person')
        else:
            print(name, 'id not exists in dict')
        print(line)


# 搜索联系人
def search_person(name):
    personList = get_data()
    if personList:
        if name in personList.keys():
            print(personList.get(name).name, personList.get(name).number)
        else:
            print("No this person of ", name)
        print(line)


def main():
    while True:
        num = input(">>")

        if num == '1':
            print('show all personList:')
            show_all()
        elif num == '2':
            print('add person:')
            name = input('input name>>')
            number = input('input number>>')
            add_person(name, number)
        elif num == '3':
            print('edit person:')
            name = input('input name>>')
            number = input('input number>>')
            edit_person(name, number)
        elif num == '4':
            print('delete person:')
            name = input('input name>>')
            delete_person(name)
        elif num == '5':
            print('search :')
            name = input('input name>>')
            search_person(name)
        elif num == '6':
            print(message)
        elif num == '0':
            break
        else:
            print('input error, please retry')


if __name__ == '__main__':
    main()
